SnykでSBOM生成してみた
こんにちは、こんばんは、アライアンス事業部のきだぱんです。
今年も残りわずか… 12月に入りました。アドベントカレンダーの季節です!
本記事はSnykを使ってコードをセキュアにした記事を投稿しよう! by Snyk Advent Calendar 2023とクラスメソッド DevOps・セキュリティ Advent Calendar 2023の12/4記事になります!
- Snykを使ってコードをセキュアにした記事を投稿しよう! by Snyk Advent Calendar 2023
- クラスメソッド DevOps・セキュリティ Advent Calendar 2023
今回は、SnykでのSBOM生成について詳しく見ていきたいと思います。
SBOMとは
今回の主役であるSBOMとは一体何者なのでしょうか。
Software Bill of Materialsで、SBOMと言います。
日本語で言うと、ソフトウェア部品表です。
SBOMは、製品やソフトウェアに含まれるコンポーネントの情報(構成情報)とそのコンポーネント間の依存関係をリスト化したデータです。
食品パッケージの裏に記載されている原材料表示のように、ソフトウェアを構成する部品を一覧化したリストをイメージすると分かりやすいでしょう。
SBOMを作成・管理することで、特定のソフトウェアの構成要素に関する情報が可視化でき、ソフトウェアの構成情報管理・組み込まれているコンポーネントのライセンス管理・IT資産管理・脆弱性管理を強化することができます。
特に脆弱性管理では、新たな脆弱性が発見された場合、SBOMに書かれたコンポーネントの依存関係から影響範囲を特定でき、早期対応に繋げることができます。
また、2021年5月に発出された米国大統領令(EO14028)において、政府調達におけるSBOM活用の検討指示が明記されたことをきっかけに、米国規制当局を中心とした取引組織へのSBOM整備の義務化など、SBOMが急速に普及しつつあります。
日本でも経済産業省により産業分野ごとのSBOM導入に向けた議論や実証実験が始まるなど、普及に向けた取り組みが進んでいます。
国際取引では納入先からSBOMの提供を求められる事例の増加が今後見込まれるため、受託企業やソフトウェアベンダーはSBOMに関する知見の整理、並びにSBOM作成・共有のためのツールの選定を実施することが望まれます。
「ソフトウェア管理に向けたSBOM(Software Bill of Materials)の導入に関する手引」(経済産業省)
こうした点から、SBOMに取り組む企業が増えています。
そんなSBOM作成~脆弱性チェックに役立つツールが、Snykです!
Snykとは
そもそもSnykとは、何なのか。
Snyk(スニーク)はデベロッパーファーストのセキュリティプラットフォームです。
Snykは、コードやオープンソースとその依存関係、コンテナやIaC(Infrastructure as a Code) における脆弱性を見つけるだけでなく、優先順位をつけて修正するためのツールです。
Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込むことができるので、デベロッパーが簡単に使うことができます。
Snyk は、Java、.NET、JavaScript、Python、Golang、PHP、C/C++、Ruby、Scalaなど、多くの言語とツールをサポートしています。
また、Docker、Terraform、k8s、Infrastructure as Codeのファイルスキャンもサポートしています。
SBOM生成
Snykを使用することで、開発ワークフローでのSBOM作成が可能です。
APIを利用したSBOM 生成
Snykでは、APIを利用してSBOMの生成が可能です。
APIを使用して、ブラウザまたはcURLからSBOMを出力できます。
2つのSBOMフォーマット
フォーマットについても見ておきましょう。
SBOMのフォーマットは2種類です。
- SPDX
ISO/IEC JTC 1に、ISO/IEC 5962というバージョンでISO化(国際オープン標準)されたSBOMのフォーマットです。
SPDX WorkGroupが提供しています。
SPDXが標準とされているので、使用率が高いです。 -
Cyclone DX
xml/json形式の比較的軽量のSBOMフォーマットです。
アプリケーションのセキュリティの背景やサプライチェーンのコンポーネント分析に使用するために設計されており、SPDXやSWIDタグと同様の目的を果たせるよう構成されています。
実際にSBOMを生成していきます
※こちらの機能をお使いになる場合には、Snykのアカウント作成が必要です。
Snyk REST API Documentation上で APIを試すことが出来ます。
下記のSnyk APIにアクセスします。
Get a project’s SBOM documentまで、スクロールします。
今回は多くの脆弱性が含まれているjuice-shopのSBOMを出力しました。
ご自身のSnykアカウント内の情報を紐づけていきます。
それぞれ記入していきます。
- org_id
- project_id
- version
- format
- cyclonedx1.4+json / cyclonedx1.4+xml / spdx2.3+json
その後、Tryをクリックします。
指定したファイルフォーマットでレスポンスが来ていることがわかります。
またAPIを実行する際のcommandも指定してくれるので、コピーしてCLIの中などで、使用していただくことが可能です。
非常にシンプルなAPIなので、Snykのアカウントを登録していただければ、すぐに試すことが可能です。
また、cURLでも実行が可能です。
export ORG_ID="your-organization-id" export PROJECT_ID="your-project-id" export SNYK_TOKEN="your-api-token" export VERSION="2022-12-15%7Ebeta" curl -X GET "https://api.snyk.io/rest/orgs/${ORG_ID}/projects/${PROJECT_ID}/sbom?version=${VERSION}&format=cyclonedx%2Bjson" \ -H "Accept: application/vnd.api+json" \ -H "Authorization: Token ${SNYK_TOKEN}" \ -H "Accept: application/vnd.cyclonedx+json" | jq . > nodejs-goof-sbom.json
json ファイルが出力されれば、成功です。
SBOM Checker
SBOM Checkerは、SBOM の脆弱性をチェックする無料の Web ツールです。
Snyk のアカウントは不要で、 Snyk 脆弱性データベースで脆弱性情報を検索することができます。
SBOM チェッカーにアクセスすることで脆弱性のスキャンが可能です。
SBOM Checker ↓
今回はサンプルデータでスキャンしてみます。
スキャン後、Snyk脆弱性データベースを使用したスキャン結果がすぐ出力されます。
おわりに
今回はSnykでのSBOM生成について試してみました。
また、Snykは2023年11月7日、ServiceNow との新しい共同ソリューションとしてSBOMの脆弱性インテリジェンスを提供することが発表されました。
こちらも試してみたいですね。
Snykに関するブログも沢山展開されていますので、是非こちらもご覧ください。
この記事がどなたかのお役に立てば幸いです。
以上、きだぱんでした。